package com.pizzaria.bean;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.OnDelete;
import org.hibernate.annotations.OnDeleteAction;


@Entity
@Table(name="pedido_produto", schema="pizzaria")
@SequenceGenerator(name = "pedido_produto_sequence", sequenceName = "pedido_produto_sequence")
public class PedidoProduto {
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY,generator="pedido_produto_sequence")
	@Column(name="id", nullable=true, updatable=false)
	private long id;

	@JoinColumn(name="pedido", nullable=false)
	@OneToOne(fetch=FetchType.LAZY)
	@OnDelete(action=OnDeleteAction.CASCADE)
	private Pedido pedido;

	@JoinColumn(name="produto", nullable=false)
	@OneToOne(fetch=FetchType.EAGER)
	@OnDelete(action=OnDeleteAction.CASCADE)
	private Produto produto;

	@Column(name="quantidade", nullable=true)
	private int quantidade;

	@Column(name="valor", nullable=true)
	private float valor;


	public PedidoProduto() { }

	public PedidoProduto(long id,Pedido pedido,Produto produto,int quantidade,float valor) {
		this.id = id;
		this.pedido = pedido;
		this.produto = produto;
		this.quantidade = quantidade;
		this.valor = valor;
	}

	public long getId(){
		return this.id;
	}

	public void setId(long id){
		this.id = id;
	}

	public Pedido getPedido(){
		return this.pedido;
	}

	public void setPedido(Pedido pedido){
		this.pedido = pedido;
	}

	public Produto getProduto(){
		return this.produto;
	}

	public void setProduto(Produto produto){
		this.produto = produto;
	}

	public int getQuantidade(){
		return this.quantidade;
	}

	public void setQuantidade(int quantidade){
		this.quantidade = quantidade;
	}

	public float getValor(){
		return this.valor;
	}

	public void setValor(float valor){
		this.valor = valor;
	}

}